Matlab基本绘图-坐标轴
使用matlab的绘图函数绘图时系统默认设置了一些属性,例如坐标轴字号大小等并根据情况自动设置坐标轴显示的上下限,这些属性可以通过函数灵活改动。
坐标轴的设置
1 | % 绘图 |
[Matlab]图对象
划重点
首先要了解的是Matlab是面向对象的。
最高等级的对象是screen,它定义了figure可以用的最大szie。
screen下面是figure。
figue就是你画图的时候跳出来的那个新的对话窗口。如果figure变化,screen是不会跟着变化的。但screen变化的话,figure就要跟着变化了。
figure下面是axes。
axes是那个窗口里面你要画的东西。axes的大小和位置取决于figure,如果你放大缩小figure的大小的话,里面的图线也会跟着变化的。
设置坐标轴参数
(1)axis,设置当前轴的坐标范围;
(2)axes,用指定的特征创建一个新坐标轴;
(3)get和set,查询或设置已有轴的各种特性;
(4)gca,返回当前轴的句柄。
如果图形中有多个坐标轴,在当前轴为最后图形创建的图形的坐标轴。Matlab绘制图形数据时候,会自动选择坐标轴范围,用axis可以设置新的坐标轴的范围,用一个具有四个元素的矢量表示坐标范围,格式为:
axis([xmin,xmax,ymin,ymax]);如果不指定某一个方向范围可以使用inf或-inf表示,则产生半自动坐标轴范围。
对于线性坐标轴,matlab会自动根据数据范围设置等间距的坐标轴数值标记,用set,修改gca变量中xtick和ytick的属性值,可以自定义坐标轴标记。如
set(gca,’ytick’,[-0.3:0.1:1]);
可以使用字符矢量通过修改gca变量中的’XtickLabel’实现标记字符,如:
set(gca,’Xtick’,-pi:pi/2:pi);
set(gca,’XtickLabel’,{‘-pi’,’-pi/2’,’0’,’pi/2’,’pi’};
Axis square设置两坐标轴长度成相等。
Axis equel设置坐标轴标记间距相等;
Axis equel tight;设置图形以紧缩方式显示。
图形窗口
figure(2);%以第二个图形窗口作为当前图形输出的窗口;
subplot(m,n,i);%分成m×n个小区域,I指定当前绘图区域;
colordef 颜色;%如white,black等,设置绘图背景颜色。
图形标注
Matlab提供了几个函数用于图形的标注:
函数名功能描述
Title添加图形标题
Xlabel,xlabel,zlabel添加X,Y,Z轴标注
Legend在图形中添加图例
Text在指定位置显示文本
Gtext使用鼠标将指定文本放在图形中的位置
如下为添加标题,坐标轴标注实例:
legend函数的基本用法是:1
2LEGEND(string1,string2,string3, ...)
legend(字符串1,字符串2,字符串3,…,参数)
分别将字符串1、字符串2、字符串3……标注到图中,每个字符串对应的图标为画图时的图标。1
2plot(x,sin(x),'.b',x,cos(x),'+r')
legend('sin','cos')
这样可以把”.”标识为’sin’,把”+”标识为”cos”
还可以用LEGEND(…,’Location’,LOC) 来指定图例标识框的位置
参数
‘North’ inside plot box near top
‘South’ inside bottom
‘East’ inside right
‘West’ inside left
‘NorthEast’ inside top right (default)
‘NorthWest’
…
0 尽量不与数据冲突,自动放置在最佳位置
1 放置在图形的右上角
2 放置在图形的左上角
3 放置在图形的左下角
4 放置在图形的右下角
-1 放置在图形视窗的外右边
其他常用补充
1:指定legend显示的位置:1
2
3legend({'str1','str2','strn'},1);
legend({'str1','str2','strn'},2);
legend({'str1','str2','strn'},'Location','SouthEast');
2:指定显示某几条曲线的legend:1
2H(i) = plot(data); %画了n个图
legend(H([1 3 5],'1,'3','5’);
3:legend横排1
2h = legend(H([1 3 5],'1,'3','5’);
set(h,'Orientation','horizon')
4:不显示方框:1
2h = legend(H([1 3 5],'1,'3','5’);
set(h,'Box','off');